from typing import List, Tuple, Optional  # 导入类型标注相关工具
from entry.Machine import Machine



class WaferCassette:
    """表示晶圆盒的类"""
    def __init__(self):
        self.size: int = 25  # 晶圆盒容量
        self.waferNames: List[str] = []  # 存储盒内晶圆名称的列表
        self.waferTypes: List[str] = []  # 存储盒内晶圆种类的列表
        self.wafersGroup: List[Tuple[str, List[str]]] = []  # 存储分组信息，元组第一个元素为组名，第二个为对应晶圆编号列表，如（B,1.1）

class Task:
    """表示任务的类"""
    def __init__(self, waferCassettes: Optional[List[WaferCassette]] = None):
        if waferCassettes is None:
            self.waferCassettes: List[WaferCassette] = [WaferCassette() for _ in range(3)]    # 每个任务包括3个晶圆盒
        else:
            self.waferCassettes = waferCassettes
        self.machines: List[Machine] = []  # 每个任务需要的机器列表